/*
 * Copyright 2010 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
/*
 * Warning! This file is generated. Modify at your own risk.
 */

package com.google.api.services.calendar.model;

import com.google.api.client.json.GenericJson;

/**
 * Model definition for EventAttendee.
 *
 * <p> This is the Java data model class that specifies how to parse/serialize into the JSON that is
 * transmitted over HTTP when working with the Calendar API. For a detailed explanation see:
 * <a href="http://code.google.com/p/google-api-java-client/wiki/Json">http://code.google.com/p/google-api-java-client/wiki/Json</a>
 * </p>
 *
 * <p>
 * Upgrade warning: starting with version 1.12 {@code getResponseHeaders()} is removed, instead use
 * {@link com.google.api.client.http.json.JsonHttpRequest#getLastResponseHeaders()}
 * </p>
 *
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public final class EventAttendee extends GenericJson {

  /**
   * The attendee's response comment. Optional.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String comment;

  /**
   * The attendee's name, if available. Optional.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String displayName;

  /**
   * The attendee's response status. Possible values are: - "needsAction" - The attendee has not
   * responded to the invitation.  - "declined" - The attendee has declined the invitation.  -
   * "tentative" - The attendee has tentatively accepted the invitation.  - "accepted" - The
   * attendee has accepted the invitation.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String responseStatus;

  /**
   * Whether this entry represents the calendar on which this copy of the event appears. Read-only.
   * The default is False.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private Boolean self;

  /**
   * The attendee's Profile ID, if available.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String id;

  /**
   * Number of additional guests. Optional. The default is 0.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private Integer additionalGuests;

  /**
   * Whether the attendee is a resource. Read-only. The default is False.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private Boolean resource;

  /**
   * Whether the attendee is the organizer of the event. Read-only. The default is False.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private Boolean organizer;

  /**
   * Whether this is an optional attendee. Optional. The default is False.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private Boolean optional;

  /**
   * The attendee's email address, if available. This field must be present when adding an attendee.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String email;

  /**
   * The attendee's response comment. Optional.
   * The value returned may be {@code null}.
   */
  public String getComment() {
    return comment;
  }

  /**
   * The attendee's response comment. Optional.
   * The value set may be {@code null}.
   */
  public EventAttendee setComment(String comment) {
    this.comment = comment;
    return this;
  }

  /**
   * The attendee's name, if available. Optional.
   * The value returned may be {@code null}.
   */
  public String getDisplayName() {
    return displayName;
  }

  /**
   * The attendee's name, if available. Optional.
   * The value set may be {@code null}.
   */
  public EventAttendee setDisplayName(String displayName) {
    this.displayName = displayName;
    return this;
  }

  /**
   * The attendee's response status. Possible values are: - "needsAction" - The attendee has not
   * responded to the invitation.  - "declined" - The attendee has declined the invitation.  -
   * "tentative" - The attendee has tentatively accepted the invitation.  - "accepted" - The
   * attendee has accepted the invitation.
   * The value returned may be {@code null}.
   */
  public String getResponseStatus() {
    return responseStatus;
  }

  /**
   * The attendee's response status. Possible values are: - "needsAction" - The attendee has not
   * responded to the invitation.  - "declined" - The attendee has declined the invitation.  -
   * "tentative" - The attendee has tentatively accepted the invitation.  - "accepted" - The
   * attendee has accepted the invitation.
   * The value set may be {@code null}.
   */
  public EventAttendee setResponseStatus(String responseStatus) {
    this.responseStatus = responseStatus;
    return this;
  }

  /**
   * Whether this entry represents the calendar on which this copy of the event appears. Read-only.
   * The default is False.
   * The value returned may be {@code null}.
   */
  public Boolean getSelf() {
    return self;
  }

  /**
   * Whether this entry represents the calendar on which this copy of the event appears. Read-only.
   * The default is False.
   * The value set may be {@code null}.
   */
  public EventAttendee setSelf(Boolean self) {
    this.self = self;
    return this;
  }

  /**
   * The attendee's Profile ID, if available.
   * The value returned may be {@code null}.
   */
  public String getId() {
    return id;
  }

  /**
   * The attendee's Profile ID, if available.
   * The value set may be {@code null}.
   */
  public EventAttendee setId(String id) {
    this.id = id;
    return this;
  }

  /**
   * Number of additional guests. Optional. The default is 0.
   * The value returned may be {@code null}.
   */
  public Integer getAdditionalGuests() {
    return additionalGuests;
  }

  /**
   * Number of additional guests. Optional. The default is 0.
   * The value set may be {@code null}.
   */
  public EventAttendee setAdditionalGuests(Integer additionalGuests) {
    this.additionalGuests = additionalGuests;
    return this;
  }

  /**
   * Whether the attendee is a resource. Read-only. The default is False.
   * The value returned may be {@code null}.
   */
  public Boolean getResource() {
    return resource;
  }

  /**
   * Whether the attendee is a resource. Read-only. The default is False.
   * The value set may be {@code null}.
   */
  public EventAttendee setResource(Boolean resource) {
    this.resource = resource;
    return this;
  }

  /**
   * Whether the attendee is the organizer of the event. Read-only. The default is False.
   * The value returned may be {@code null}.
   */
  public Boolean getOrganizer() {
    return organizer;
  }

  /**
   * Whether the attendee is the organizer of the event. Read-only. The default is False.
   * The value set may be {@code null}.
   */
  public EventAttendee setOrganizer(Boolean organizer) {
    this.organizer = organizer;
    return this;
  }

  /**
   * Whether this is an optional attendee. Optional. The default is False.
   * The value returned may be {@code null}.
   */
  public Boolean getOptional() {
    return optional;
  }

  /**
   * Whether this is an optional attendee. Optional. The default is False.
   * The value set may be {@code null}.
   */
  public EventAttendee setOptional(Boolean optional) {
    this.optional = optional;
    return this;
  }

  /**
   * The attendee's email address, if available. This field must be present when adding an attendee.
   * The value returned may be {@code null}.
   */
  public String getEmail() {
    return email;
  }

  /**
   * The attendee's email address, if available. This field must be present when adding an attendee.
   * The value set may be {@code null}.
   */
  public EventAttendee setEmail(String email) {
    this.email = email;
    return this;
  }

}
